package com.omi.iberolactalpreventa;


import java.util.ArrayList;
import com.omi.iberolactalpreventa.objects.AdapterCliente;
import com.omi.iberolactalpreventa.objects.ItmCliente;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;

public class ListadoClientes extends Activity{
	
	private Spinner cmbBusquedaPor;
	private TextView txtBusqueda;
	private ListView lstResults;
	private ArrayAdapter<String> adpbusq;
	private String campoWhere;
	private String idClient;
	private MenuItem itmnew;
	private MenuItem itmvisitas;
	private boolean isNewPedido;
	
	@TargetApi(Build.VERSION_CODES.HONEYCOMB)
	@SuppressLint("NewApi")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_listado_clientes);
		
		Bundle extras = getIntent().getExtras();
		if(extras!=null)
		{
			isNewPedido = extras.getBoolean("isNew");
		}
		
		cmbBusquedaPor = (Spinner)findViewById(R.id.cmbBusquedaPor);
		txtBusqueda = (TextView) findViewById(R.id.txtBusqueda);
		lstResults = (ListView) findViewById(R.id.lstResults);
		
		String[] arrbusq = new String[]{"Código","Nombre","Dirección","Teléfono","NIF/CIF"};
		adpbusq = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, arrbusq);

		cmbBusquedaPor.setAdapter(adpbusq);
		
		cmbBusquedaPor.setOnItemSelectedListener(new OnItemSelectedListener() {
		
			//Eventos:
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				txtBusqueda.setText("");
				txtBusqueda.setHint(cmbBusquedaPor.getSelectedItem().toString());
				//Guardamos el valor del campo que vamos a utilizar:
				if(cmbBusquedaPor.getSelectedItem().toString().equals("Código"))
				{
					campoWhere = "COD_CLIENTE";
				}
				else if(cmbBusquedaPor.getSelectedItem().toString().equals("Nombre"))
				{
					campoWhere ="NOMBRE";
				}
				else if(cmbBusquedaPor.getSelectedItem().toString().equals("Dirección"))
				{
					campoWhere = "DIRECCION";
				}
				else if(cmbBusquedaPor.getSelectedItem().toString().equals("Teléfono"))
				{
				campoWhere = "TELEFONO";
				}
				else if(cmbBusquedaPor.getSelectedItem().toString().equals("NIF/CIF"))
				{
				campoWhere = "NIF_CIF";
				}
			}
			
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				
			}
			
	});
		
		txtBusqueda.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				consultaCliente(s+"");
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}
			
			@Override
			public void afterTextChanged(Editable s) {
		
			}
		});


			lstResults.setOnItemClickListener(new OnItemClickListener() {

				@Override
				public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
					Intent intMenu;
					ItmCliente cli = (ItmCliente)parent.getItemAtPosition(position);
					
					if(isNewPedido)
					{
				    intMenu = new Intent("com.omi.iberolactalpreventa.NuevoPedido");
			    	intMenu.putExtra("idClient", cli.getCodigo());
			    	startActivity(intMenu);	
					}
					else
					{
				    	intMenu = new Intent("com.omi.iberolactalpreventa.DatosCli");
						intMenu.putExtra("idClient",cli.getCodigo());
				    	startActivity(intMenu);
					}
				}
			});


		lstResults.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View contentView,int position, long id) {
				//Guardamos el codigo del item que hemos seleccionado:
				ItmCliente cli = (ItmCliente)parent.getItemAtPosition(position);
				idClient = cli.getCodigo();
				//Ocultamos el teclado:
				InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
				imm.hideSoftInputFromWindow(txtBusqueda.getWindowToken(), 0);
				//Activsamos y Mostramos las opciones:
				itmnew.setEnabled(true);
				itmvisitas.setEnabled(true);
				openOptionsMenu();
				return false;
			}
		});

		campoWhere = "COD_CLIENTE";
		getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
		
		getActionBar().setDisplayHomeAsUpEnabled(true);
		
	}
	
	
	@Override
	public void onBackPressed() {
		finish();
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.listado_clientes,menu);

		itmnew = menu.findItem(R.id.itmnew);
		itmvisitas = menu.findItem(R.id.itmvisitas);

		if(isNewPedido)
		{
			itmnew.setVisible(false);
			itmvisitas.setVisible(false);
			return true;
		}
		
		itmnew.setEnabled(false);
		itmvisitas.setEnabled(false);
		return true;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		Intent intMenu= new Intent();
	    switch (item.getItemId()) {
	    case android.R.id.home:
            finish();
            break;
	    case R.id.itmnew:
	    	intMenu.setAction("com.omi.iberolactalpreventa.NuevoPedido");
	    	intMenu.putExtra("idClient",idClient);
	    	startActivity(intMenu);
	    	break;
	    case R.id.itmvisitas:
	    	intMenu.setAction("com.omi.iberolactalpreventa.Visitas");
	    	intMenu.putExtra("idClient",idClient);
	    	startActivity(intMenu);
	    	break;
	    }
	    return true;
	    }
	
	private void consultaCliente(String where)
	{
		//Rellenamos la lista con los resultados de los clientes:
		Cursor c;
		lstResults.setAdapter(null);
		if(!Modulebase.ruta.equals(""))
		{
			c = Modulebase.db.ejecutarSelect(new String[]{"COD_CLIENTE","NOMBRE","DIRECCION","TELEFONO","NIF_CIF"}, "CLIENTE", campoWhere+" LIKE ? AND RUTA=? AND VENDEDOR=?",new String[]{"%"+where+"%",Modulebase.ruta,Modulebase.vendedor}, "COD_CLIENTE");
		}
        else
        {
        	c = Modulebase.db.ejecutarSelect(new String[]{"COD_CLIENTE","NOMBRE","DIRECCION","TELEFONO","NIF_CIF"},"CLIENTE", campoWhere+" LIKE ? AND VENDEDOR=?",new String[]{"%"+where+"%",Modulebase.vendedor}, "COD_CLIENTE");
		}

		if(c!=null && c.moveToFirst())
		{
			ArrayList<ItmCliente> clientes = new ArrayList<ItmCliente>();
			do
			{
				ItmCliente cli = new ItmCliente(c.getString(0), c.getString(1), c.getString(2), c.getString(3), c.getString(4));
				clientes.add(cli);				
			}while(c.moveToNext());

			AdapterCliente adptr = new AdapterCliente(this, clientes);

			lstResults.setAdapter(adptr);
			
		}
	}
}
